package com.engine.salary.entity.datacollection;

import com.engine.salary.annotation.*;
import com.engine.hrmelog.annotation.ElogTransform;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 数据采集-累计情况表
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@SalaryTable(pageId = "a4f83287-e3f9-4275-9527-7d06e54y6238", fields = "id,addUpSubtraction", operates = {@SalaryTableOperate(text = "删除",index = "0")})
//hrsa_add_up_situation
@ElogTransform(name = "往期累计情况")
@Auth(page = "addUpSituation")
public class AddUpSituation {
    /**
     * 主键id
     */
    @ElogTransform(name = "id")
    private Long id;

    /**
     * 人员信息表的主键id
     */
    @ElogTransform(name = "创建人id")
    private Long employeeId;

    /**
     * 个税扣缴义务人的主键id
     */
    @ElogTransform(name = "个税扣缴义务人id")
    private Long taxAgentId;

    /**
     * 税款所属期
     */
    @ElogTransform(name = "税款所属期")
    private Date taxYearMonth;
    private List<Date> taxYearMonthRange;

    /**
     * 年份
     */
    @ElogTransform(name = "年份")
    private Integer year;

    /**
     * 累计收入额
     */
    @ElogTransform(name = "累计收入额")
    @SalaryFormulaVar(defaultLabel = "累计收入额", labelId = 86712, dataType = "number")
    @Encrypt
    private String addUpIncome;

    /**
     * 累计减除费用
     */
    @ElogTransform(name = "累计减除费用")
    @SalaryFormulaVar(defaultLabel = "累计减除费用", labelId = 86711, dataType = "number")
    @Encrypt
    private String addUpSubtraction;

    /**
     * 累计社保个人合计
     */
    @ElogTransform(name = "累计社保个人合计")
    @SalaryFormulaVar(defaultLabel = "累计社保个人合计", labelId = 86710, dataType = "number")
    @Encrypt
    private String addUpSocialSecurityTotal;

    /**
     * 累计公积金个人合计
     */
    @ElogTransform(name = "累计公积金个人合计")
    @SalaryFormulaVar(defaultLabel = "累计公积金个人合计", labelId = 86709, dataType = "number")
    @Encrypt
    private String addUpAccumulationFundTotal;

    /**
     * 累计子女教育
     */
    @ElogTransform(name = "累计子女教育")
    @SalaryFormulaVar(defaultLabel = "累计子女教育", labelId = 86321, dataType = "number")
    @Encrypt
    private String addUpChildEducation;

    /**
     * 累计继续教育
     */
    @ElogTransform(name = "累计继续教育")
    @SalaryFormulaVar(defaultLabel = "累计继续教育", labelId = 86323, dataType = "number")
    @Encrypt
    private String addUpContinuingEducation;

    /**
     * 累计住房贷款利息
     */
    @ElogTransform(name = "累计住房贷款利息")
    @SalaryFormulaVar(defaultLabel = "累计住房贷款利息", labelId = 86324, dataType = "number")
    @Encrypt
    private String addUpHousingLoanInterest;

    /**
     * 累计住房租金
     */
    @ElogTransform(name = "累计住房租金")
    @SalaryFormulaVar(defaultLabel = "累计住房租金", labelId = 86325, dataType = "number")
    @Encrypt
    private String addUpHousingRent;

    /**
     * 累计赡养老人
     */
    @ElogTransform(name = "累计赡养老人")
    @SalaryFormulaVar(defaultLabel = "累计赡养老人", labelId = 86326, dataType = "number")
    @Encrypt
    private String addUpSupportElderly;

    /**
     * 累计大病医疗
     */
    @ElogTransform(name = "累计大病医疗")
    @SalaryFormulaVar(defaultLabel = "累计大病医疗", labelId = 105142, dataType = "number")
    @Encrypt
    private String addUpIllnessMedical;

    /**
     * 累计婴幼儿照护
     */
    @ElogTransform(name = "累计婴幼儿照护")
    @SalaryFormulaVar(defaultLabel = "累计婴幼儿照护", labelId = 117732, dataType = "number")
    @Encrypt
    private String addUpInfantCare;

    /**
     * 累计婴幼儿照护
     */
    @ElogTransform(name = "累计个人养老金")
    @SalaryFormulaVar(defaultLabel = "累计个人养老金", labelId = 117732, dataType = "number")
    @Encrypt
    private String addUpPrivatePension;

    /**
     * 累计企业（职业）年金及其他福利
     */
    @ElogTransform(name = "累计企业（职业）年金及其他福利")
    @SalaryFormulaVar(defaultLabel = "累计企业（职业）年金及其他福利", labelId = 90567, dataType = "number")
    @Encrypt
    private String addUpEnterpriseAndOther;

    /**
     * 累计其他免税扣除
     */
    @ElogTransform(name = "累计其他免税扣除")
    @SalaryFormulaVar(defaultLabel = "累计其他免税扣除", labelId = 93902, dataType = "number")
    @Encrypt
    private String addUpOtherDeduction;

    /**
     * 累计免税收入
     */
    @ElogTransform(name = "累计免税收入")
    @SalaryFormulaVar(defaultLabel = "累计免税收入", labelId = 86704, dataType = "number")
    @Encrypt
    private String addUpTaxExemptIncome;

    /**
     * 累计准予扣除的捐赠额
     */
    @ElogTransform(name = "累计准予扣除的捐赠额")
    @SalaryFormulaVar(defaultLabel = "累计准予扣除的捐赠额", labelId = 86703, dataType = "number")
    @Encrypt
    private String addUpAllowedDonation;

    /**
     * 累计减免税额
     */
    @ElogTransform(name = "累计减免税额")
    @SalaryFormulaVar(defaultLabel = "累计减免税额", labelId = 105478, dataType = "number")
    @Encrypt
    private String addUpTaxSavings;

    /**
     * 累计已预扣预缴税额
     */
    @ElogTransform(name = "累计已预扣预缴税额")
    @SalaryFormulaVar(defaultLabel = "累计已预扣预缴税额", labelId = 86702, dataType = "number")
    @Encrypt
    private String addUpAdvanceTax;

    /**
     * 创建时间
     */
    @ElogTransform(name = "创建时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @ElogTransform(name = "更新时间")
    private Date updateTime;

    /**
     * 创建人
     */
    @ElogTransform(name = "创建人")
    private Long creator;

    /**
     * 是否已删除。0：未删除、1：已删除
     */
    private Integer deleteType;

    /**
     * 租户ID
     */
    @ElogTransform(name = "租户")
    private String tenantKey;


    //条件
    Collection<Long> employeeIds;
    Collection<Long> taxAgentIds;


    private Set<String> opts;

}